package fiuba.algo3.gpschallenge.gui;

import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

import fiuba.algo3.gpschallenge.Controlador.Controlador;
import fiuba.algo3.gpschallenge.modelo.Juego;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;

public class PanelEstadoDelJuego extends JPanel {
	
	private Agregable interfazAgregable;
	private Controlador control;
	private Juego modelo;
	private Image imagenVehiculo = null;
	private final int ALTO = 240;
	private final int ANCHO = 150;
	private JLabel resultadoMovActuales;
	private JLabel resultadoMovLimites;
	private JLabel resultadoVehiculoActual;

	
	public PanelEstadoDelJuego(Agregable interfazM, Juego modelo, Controlador control) {
		setBackground(Color.WHITE);
		interfazAgregable = interfazM;
		this.control = control;
		this.modelo = modelo;
		setPreferredSize(new Dimension(ANCHO, ALTO));
		setForeground(Color.WHITE);
		setLayout(null);

		JLabel movLimites = new JLabel("# Mov Limites: ");
		movLimites.setBackground(Color.WHITE);
		movLimites.setHorizontalAlignment(SwingConstants.CENTER);
		movLimites.setForeground(Color.RED);
		movLimites.setFont(new Font("Arial Black", Font.BOLD, 14));
		movLimites.setBounds(0, 11, 140, 38);
		add(movLimites);
		
		JLabel movActuales = new JLabel("#Mov Actuales: ");
		movActuales.setBackground(Color.WHITE);
		movActuales.setHorizontalAlignment(SwingConstants.CENTER);
		movActuales.setFont(new Font("Arial Black", Font.BOLD, 14));
		movActuales.setBounds(0, 81, 140, 29);
		add(movActuales);
		
		JLabel vehiculoActual = new JLabel("Vehiculo Actual: ");
		vehiculoActual.setBackground(Color.WHITE);
		vehiculoActual.setFont(new Font("Arial Black", Font.BOLD, 12));
		vehiculoActual.setHorizontalAlignment(SwingConstants.CENTER);
		vehiculoActual.setBounds(-7, 139, 147, 38);
		add(vehiculoActual);
		
		resultadoMovLimites = new JLabel();
		resultadoMovLimites.setFont(new Font("Arial Black", Font.BOLD, 13));
		resultadoMovLimites.setHorizontalAlignment(SwingConstants.CENTER);
		resultadoMovLimites.setBounds(10, 44, 112, 26);
		add(resultadoMovLimites);
		
		resultadoMovActuales = new JLabel ();
		resultadoMovActuales.setHorizontalAlignment(SwingConstants.CENTER);
		resultadoMovActuales.setFont(new Font("Arial Black", Font.BOLD, 11));
		resultadoMovActuales.setBounds(10, 117, 112, 26);
		add(resultadoMovActuales);
		
		resultadoVehiculoActual = new JLabel();
		resultadoVehiculoActual.setHorizontalAlignment(SwingConstants.CENTER);
		resultadoVehiculoActual.setFont(new Font("Arial Black", Font.BOLD, 13));
		resultadoVehiculoActual.setBounds(3, 175, 112, 26);
		add(resultadoVehiculoActual);

	}
	@Override
	public void paintComponent(Graphics g){
		g.setColor(Color.white);
		g.fillRect (0, 0, ANCHO, ALTO);
		resultadoMovLimites.setText ("" + modelo.getDificultad().getCantidadMaximaDeMovimientos());
		resultadoMovActuales.setText("" + this.modelo.getJugador().getMovimientos());
		resultadoVehiculoActual.setText ("" + modelo.getJugador().getVehiculo().toString());
		imagenVehiculo = modelo.getJugador().getVehiculo().getImagen();
		g.drawImage(imagenVehiculo, 0, ALTO, 150, 150, null);

	}
	
	public void actualizarPanel(Juego modelo){
		this.modelo = modelo;
		repaint();
	}
	
}
